package com.csi.domain;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;

/**
 * 房型表
 */
@Data
@Schema(description = "房型信息模型")
public class RoomType {

    @Schema(description = "房型的唯一标识符", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private long id; // 房型id

    @Schema(description = "房间类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "标准大床房")
    private String roomType; // 房间类型

    @Schema(description = "房间图片URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://example.com/images/room_type_1.jpg")
    private String roomImage; // 房间图片

    @Schema(description = "最大入住人数", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    private int peopleNum; // 入住人数(最大容纳人数)

    @Schema(description = "房间价格（单位：元）", requiredMode = Schema.RequiredMode.REQUIRED, example = "399.00", type = "number", format = "float")
    private BigDecimal price; // 房间价格

    @Schema(description = "是否含早餐", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
    private boolean haveMeal; // 是否含早餐

    @Schema(description = "关联的酒店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    private long hotelId; // 酒店id

    @Schema(description = "该房型的房间数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
    private int roomNum; // 房间数量

    @Schema(description = "根节点数组（假设用于某种逻辑或层级关系）", example = "[1, 2, 3]")
    private Integer[] roots;

    @Schema(description = "该房型所包含的设施列表", implementation = RoomtypeFacility.class)
    private List<RoomtypeFacility> roomtypeFacilities; // 房型设施

    @Schema(description = "与该房型相关的设施信息列表", implementation = FacilityInfo.class)
    private List<FacilityInfo> facilityInfos; // 设施信息
}